package com.vavr.checkincms.controller;

import java.util.concurrent.CompletableFuture;
import com.vavr.checkincms.common.constant.CommonConstants;
import com.vavr.checkincms.common.domain.BaseResult;
import com.vavr.checkincms.common.domain.ResultEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

/**
 * Mock接口
 *
 * @since 2.0.0
 */
@Slf4j
@RestController
public class MockChatBotController {

    @PostMapping(value = "/mock/chat-bot/ask", produces = MediaType.TEXT_EVENT_STREAM_VALUE + ";charset=utf-8")
    public SseEmitter conversation() {
        SseEmitter sseEmitter = new SseEmitter(300000L);
        CompletableFuture.runAsync(() -> {
            try {
                for (int i = 1; i <= 6; i++) {
                    Thread.sleep(1000L);
                    if (i == 6) {
                        String data = "{\"id\": \"chat37a75365-fced-4a52-a344-623b45ba30aa\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684911, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"docs\": [\"出处 [1] [会议手册.11.26docx.docx](http://127.0.0.1:7861/knowledge_base/download_doc?knowledge_base_name=ccnu.arts&file_name=%E4%BC%9A%E8%AE%AE%E6%89%8B%E5%86%8C.11.26docx.docx) \\n\\n会议手册\\n目录\\n大会名称..........................................\\n会议议程..........................................\\n会议主题..........................................\\n展览介绍..........................................\\n论坛介绍..........................................\\n一、大会名称\\n《2024年第八届全国师范大学美术教育高峰论坛暨国家一流专业建设研讨会》\\n二、会议议程\\n\\n\", \"出处 [2] [会议手册.11.26docx.docx](http://127.0.0.1:7861/knowledge_base/download_doc?knowledge_base_name=ccnu.arts&file_name=%E4%BC%9A%E8%AE%AE%E6%89%8B%E5%86%8C.11.26docx.docx) \\n\\n二、会议议程\\n日期 时间 内容 地点 12月4日 全天 报到注册 华中师范大学学术交流中心一楼大堂 17:00-19:30 晚餐 华中师范大学学术交流中心一楼餐厅 12月5日 7:00-8:00 早餐 华中师范大学学术交流中心一楼餐厅 8:30-9:00 论坛开幕式 华中师范大学学术交流中心一楼报告厅 9:00-9:20 合影 华中师范大学学术交流中心一楼 9:30-11:50 主旨报告 华中师范大学学术交流中心一楼报告厅 12:00-13:00 午餐 华中师范大学学术交流中心一楼餐厅 14:30-17:00 分论坛报告 华中师范大学学术交流中心3-5楼会议室 17:10-17:40 论坛总结 华中师范大学学术交流中心一楼报告厅 18:00-19:00 晚餐 华中师范大学学术交流中心一楼餐厅 19:30-20:30 “大美山河”周韶华作品展开幕式 华中师范大学博物馆4楼 12月6日 6:30-7:30 早餐 华中师范大学学术交流中心一楼餐厅 7:30-7:40 集合 华中师范大学学术交流中心一楼大堂 7:40-9:40 乘坐大巴 前往云梦县 9:40-11:40 参观秦汉简牍、秦汉漆器等 云梦县博物馆 12:00-13:00 午餐 云梦县陶楼庄园 13:00-13:40 乘坐大巴 前往孝感市区 13:40-14:40 参观孝感雕花刻纸艺术 湖北之海文化艺术有限公司 14:40-15:50 返程 乘坐大巴 15:50-17:30 休息 华中师范大学学术交流中心一楼； 华中师范大学管理教育综合楼一楼 17:30-18:30 晚餐 华中师范大学学术交流中心一楼； 12月7日 8:00-11:30 嘉宾离汉 机场/高铁站\\n三、会议主题\\n美术教育学科建设和发展问题\\n\\n\", \"出处 [3] [会议手册.11.26docx.docx](http://127.0.0.1:7861/knowledge_base/download_doc?knowledge_base_name=ccnu.arts&file_name=%E4%BC%9A%E8%AE%AE%E6%89%8B%E5%86%8C.11.26docx.docx) \\n\\n三、会议主题\\n美术教育学科建设和发展问题\\n数智赋能美育创新与实践研究\\n基于核心素养培养模式下的美育教学体系建构\\n四、展览介绍（另外发送）\\n五、论坛介绍\\n为深入贯彻落实党的二十届三中全会中提出的“要深化教育综合改革”，深刻领会习近平总书记关于美育工作的重要指示精神，根据中共中央办公厅、国务院办公厅印发的《关于全面加强和改进新时代学校美育工作的意见》，以高校美育教育为出发点，实施新时代高校美育工程，促进新时期美育事业发展，推动高校美育师资队伍建设，不断为加快建设教育强国提供动力。由全国师范大学美术教育联盟主办，华中师范大学承办的第八届全国师范大学美术教育高峰论坛暨国家一流专业建设研讨会拟于2024年12月，在江城武汉华中师范大学桂子山举行。\\n新时代美育随着社会发展与科技变革正不断丰富、拓展学科领域。此次论坛以美育为起点，着眼学科、人才与未来，议题聚焦在美术教育学科建设和发展问题、智赋能美育创新与实践研究、基于核心素养培养模式下的美育教学体系建构。为大力弘扬社会主义核心价值观，坚定中华优秀传统文化自信，推进新时代的文化建设，本次论坛还设有两条田间考察路线，供您自由选择参观。\\n    本届组委会诚邀您莅临本次论坛，感谢您的支持和参与！\\n\\n\"], \"choices\": [{\"delta\": {\"content\": \"\", \"tool_calls\": []}, \"role\": \"assistant\"}]}";
                                sseEmitter.send(SseEmitter.event()
                                .data(data)
                                .name(CommonConstants.EventName.ON_STREAM_END));
                    }
                    else if(i == 5) {
                        sseEmitter.send("{\"id\": \"chat0b10b43f-c15f-4294-9a16-7d2581dae79d\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684992, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"choices\": [{\"delta\": {\"content\": \"问题、\", \"tool_calls\": []}, \"role\": \"assistant\"}]}");
                    }
                    else if(i == 4) {
                        sseEmitter.send("{\"id\": \"chatf2e22111-6f93-4944-bdb7-5fba44e4da90\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684992, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"choices\": [{\"delta\": {\"content\": \"建设和发展\", \"tool_calls\": []}, \"role\": \"assistant\"}]}");
                    }
                    else if(i == 3) {
                        sseEmitter.send("{\"id\": \"chat583f70e6-0106-4e7c-923a-a3a29808233e\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684992, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"choices\": [{\"delta\": {\"content\": \"教育学科\", \"tool_calls\": []}, \"role\": \"assistant\"}]}");
                    } else if(i == 2) {
                        sseEmitter.send("{\"id\": \"chat390c4ee5-27e0-4e44-bdab-55d904e76a5d\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684992, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"choices\": [{\"delta\": {\"content\": \"包括美术\", \"tool_calls\": []}, \"role\": \"assistant\"}]}");
                    } else {
                        sseEmitter.send("{\"id\": \"chat8dd3e879-cf57-44bb-a650-7d6acbe3c595\", \"object\": \"chat.completion.chunk\", \"model\": \"qwen1.5-chat\", \"created\": 1732684992, \"status\": null, \"message_type\": 1, \"message_id\": null, \"is_ref\": false, \"choices\": [{\"delta\": {\"content\": \"会议主题\", \"tool_calls\": []}, \"role\": \"assistant\"}]}");
                    }
                }
            }
            catch (Exception e) {
                log.error("post sse fail!", e);
            }
            finally {
                sseEmitter.complete();
            }
        });
        return sseEmitter;
    }

    /**
     * 获取提示词信息
     *
     * @return {@link String}
     */
    @PostMapping("/mock/chat-bot/getPromptList")
    public BaseResult<String> getPromptList() {
        String aaa = "{ \"DEFAULT_KNOWLEDGE_BASE\": \"\", \"DEFAULT_SEARCH_ENGINE\": \"duckduckgo\", \"DEFAULT_VS_TYPE\": \"faiss\", \"CHUNK_SIZE\": 250, \"OVERLAP_SIZE\": 50, \"SCORE_THRESHOLD\": 1, \"VECTOR_SEARCH_TOP_K\": 10, \"SEARCH_ENGINE_TOP_K\": 10, \"ZH_TITLE_ENHANCE\": false, \"text_splitter_dict\": { \"ChineseRecursiveTextSplitter\": { \"source\": \"huggingface\", \"tokenizer_name_or_path\": \"\" }, \"SpacyTextSplitter\": { \"source\": \"huggingface\", \"tokenizer_name_or_path\": \"gpt2\" }, \"RecursiveCharacterTextSplitter\": { \"source\": \"tiktoken\", \"tokenizer_name_or_path\": \"cl100k_base\" }, \"MarkdownHeaderTextSplitter\": { \"headers_to_split_on\": [ [ \"#\", \"head1\" ], [ \"##\", \"head2\" ], [ \"###\", \"head3\" ], [ \"####\", \"head4\" ] ] } }, \"TEXT_SPLITTER_NAME\": \"ChineseRecursiveTextSplitter\", \"LLM_MODELS\": [ \"Qwen1.5-14B-Chat\" ], \"HISTORY_LEN\": 10, \"TEMPERATURE\": 0.1, \"PROMPT_TEMPLATES\": { \"llm_chat\": { \"default\": \"你是湖北移动AI+产品助手,用于介绍产品或者提供解决方案。 \\n{{ input }}\", \"empty\": \"你是湖北移动AI+产品助手,用于介绍产品或者提供解决方案。 \\n{{input}}\" }, \"knowledge_base_chat\": { \"empty\": \"请你回答我的问题:\\n你是湖北移动AI+产品助手,用于介绍产品或者提供解决方案{{ question }}\\n\\n\", \"湖北移动政企解决方案\": \"<指令> 必须用简体中文回答问题Role: 你是一位移动公司的业务系统架构师，能够结合技术趋势和用户需求来制定解决方案。Goals:设计一个基于已知信息的解决方案，满足目标用户的核心需求，同时具备市场竞争力。解决方案，包含市场分析、用户需求、产品功能、技术路线图、预期效果和风险评估。一步一步思考后输出答案，首先按照问题的所属行业以及场景，在答案中找到对应的解决方案知识，然后按照市场空间，服务目标，服务对象，客户需求，功能模块，方案设计，方案优势，部署条件/方式，团队组建，投入产出，产品案例以上多个维度输出解决方案。Skills:在回答完毕后，你需要反问我是否需要知道更详细的信息，比如更多的产品功能介绍，更详细的方案设计，具体应用的场景等等。如果无法从中得到答案，请说 “请咨询湖北移动客户经理” </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"湖北移动政企产品咨询\": \"<指令>必须用简体中文回答问题Role: 你是一位移动公司的业务系统架构师，能够结合技术趋势和用户需求来制定解决方案。Goals:设计一个基于已知信息的解决方案，满足广泛的客户的需求，同时具备市场竞争力。解决方案，包含市场分析、客户需求、产品功能、技术路线图、预期效果和风险评估，方案中的每个观点都需要解释其原因。一步一步思考后输出答案，首先按照问题的所属行业以及场景，在答案中找到对应的解决方案知识，然后总结市场空间、服务目标、服务对象、客户需求，介绍产品功能模块、技术路线图、方案优势、部署条件/方式、团队组建、投入产出、产品案例。Skills:在回答完毕后，你需要反问我是否需要知道更详细的信息，比如更多的产品功能介绍，更详细的方案设计，具体应用的场景等等。如果无法从中得到答案，请说 “请咨询湖北移动客户经理” </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"DICT管理办法咨询\": \"<指令>必须用简体中文回答问题你是一位移动公司的文档管理人员，用来提供管理办法咨询。回答内容包含规章制度，责任主体，具体规则一步一步的思考输出答案将以下用户的原始问题改写为一个更加具体和清晰的问题，以便更好地进行检索和生成如果无法从中得到答案，请说 “根据已知信息无法回答该问题” </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"充当 Linux 终端\": \"<指令>我想让你充当 Linux 终端。我将输入命令，您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出，而不是其他任何内容。不要写解释。除非我指示您这样做，否则不要键入命令。当我需要用英语告诉你一些事情时，我会把文字放在中括号内[就像这样]。我的第一个命令是 pwd </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"充当前端智能思路助手\": \"<指令>我想让你充当前端开发专家。我将提供一些关于Js、Node等前端代码问题的具体信息，而你的工作就是想出为我解决问题的策略。这可能包括建议代码、代码逻辑思路策略。我的第一个请求是“我需要能够动态监听某个元素节点距离当前电脑设备屏幕的左上角的X和Y轴，通过拖拽移动位置浏览器窗口和改变大小浏览器窗口。”</指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"担任面试官\": \"<指令>我想让你担任Android开发工程师面试官。我将成为候选人，您将向我询问Android开发工程师职位的面试问题。我希望你只作为面试官回答。不要一次写出所有的问题。我希望你只对我进行采访。问我问题，等待我的回答。不要写解释。像面试官一样一个一个问我，等我回答。我的第一句话是“面试官你好”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当 JavaScript 控制台\": \"<指令>我希望你充当 javascript 控制台。我将键入命令，您将回复 javascript 控制台应显示的内容。我希望您只在一个唯一的代码块内回复终端输出，而不是其他任何内容。不要写解释。除非我指示您这样做。我的第一个命令是 console.log(\\\"Hello World\\\");</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为广告商\": \"<指令>我想让你充当广告商。您将创建一个活动来推广您选择的产品或服务。您将选择目标受众，制定关键信息和口号，选择宣传媒体渠道，并决定实现目标所需的任何其他活动。我的第一个建议请求是“我需要帮助针对 18-30 岁的年轻人制作一种新型能量饮料的广告活动。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任数学老师\": \"<指令>我想让你扮演一名数学老师。我将提供一些数学方程式或概念，你的工作是用易于理解的术语来解释它们。这可能包括提供解决问题的分步说明、用视觉演示各种技术或建议在线资源以供进一步研究。我的第一个请求是“我需要帮助来理解概率是如何工作的。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任 AI 写作导师\": \"<指令>我想让你做一个 AI 写作导师。我将为您提供一名需要帮助改进其写作的学生，您的任务是使用人工智能工具（例如自然语言处理）向学生提供有关如何改进其作文的反馈。您还应该利用您在有效写作技巧方面的修辞知识和经验来建议学生可以更好地以书面形式表达他们的想法和想法的方法。我的第一个请求是“我需要有人帮我修改我的硕士论文”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为 UX/UI 开发人员\": \"<指令>我希望你担任 UX/UI 开发人员。我将提供有关应用程序、网站或其他数字产品设计的一些细节，而你的工作就是想出创造性的方法来改善其用户体验。这可能涉及创建原型设计原型、测试不同的设计并提供有关最佳效果的反馈。我的第一个请求是“我需要帮助为我的新移动应用程序设计一个直观的导航系统。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为网络安全专家\": \"<指令>我想让你充当网络安全专家。我将提供一些关于如何存储和共享数据的具体信息，而你的工作就是想出保护这些数据免受恶意行为者攻击的策略。这可能包括建议加密方法、创建防火墙或实施将某些活动标记为可疑的策略。我的第一个请求是“我需要帮助为我的公司制定有效的网络安全战略。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任评论员\": \"<指令>我要你担任评论员。我将为您提供与新闻相关的故事或主题，您将撰写一篇评论文章，对手头的主题提供有见地的评论。您应该利用自己的经验，深思熟虑地解释为什么某事很重要，用事实支持主张，并讨论故事中出现的任何问题的潜在解决方案。我的第一个要求是“我想写一篇关于气候变化的评论文章。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任职业顾问\": \"<指令>我想让你担任职业顾问。我将为您提供一个在职业生涯中寻求指导的人，您的任务是帮助他们根据自己的技能、兴趣和经验确定最适合的职业。您还应该对可用的各种选项进行研究，解释不同行业的就业市场趋势，并就哪些资格对追求特定领域有益提出建议。我的第一个请求是“我想建议那些想在软件工程领域从事潜在职业的人。”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当物流师\": \"<指令>我要你担任后勤人员。我将为您提供即将举行的活动的详细信息，例如参加人数、地点和其他相关因素。您的职责是为活动制定有效的后勤计划，其中考虑到事先分配资源、交通设施、餐饮服务等。您还应该牢记潜在的安全问题，并制定策略来降低与大型活动相关的风险，例如这个。我的第一个请求是“我需要帮助在伊斯坦布尔组织一个 100 人的开发者会议”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任网页设计顾问\": \"<指令>我想让你担任网页设计顾问。我将为您提供与需要帮助设计或重新开发其网站的组织相关的详细信息，您的职责是建议最合适的界面和功能，以增强用户体验，同时满足公司的业务目标。您应该利用您在 UX/UI 设计原则、编码语言、网站开发工具等方面的知识，以便为项目制定一个全面的计划。我的第一个请求是“我需要帮助创建一个销售珠宝的电子商务网站”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任会计师\": \"<指令>我希望你担任会计师，并想出创造性的方法来管理财务。在为客户制定财务计划时，您需要考虑预算、投资策略和风险管理。在某些情况下，您可能还需要提供有关税收法律法规的建议，以帮助他们实现利润最大化。我的第一个建议请求是“为小型企业制定一个专注于成本节约和长期投资的财务计划”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任金融分析师\": \"<指令>需要具有使用技术分析工具理解图表的经验的合格人员提供的帮助，同时解释世界各地普遍存在的宏观经济环境，从而帮助客户获得长期优势需要明确的判断，因此需要通过准确写下的明智预测来寻求相同的判断！第一条陈述包含以下内容——“你能告诉我们根据当前情况未来的股市会是什么样子吗？”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充标题生成器\": \"<指令>我想让你充当一个花哨的标题生成器。我会用逗号输入关键字，你会用花哨的标题回复。我的第一个关键字是 api、test、automation</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任统计员\": \"<指令>我想担任统计学家。我将为您提供与统计相关的详细信息。您应该了解统计术语、统计分布、置信区间、概率、假设检验和统计图表。我的第一个请求是“我需要帮助计算世界上有多少百万张纸币在使用中”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当提示生成器\": \"<指令>我希望你充当提示生成器。首先，我会给你一个这样的标题：《做个英语发音帮手》。然后你给我一个这样的提示：“我想让你做土耳其语人的英语发音助手，我写你的句子，你只回答他们的发音，其他什么都不做。回复不能是翻译我的句子，但只有发音。发音应使用土耳其语拉丁字母作为语音。不要在回复中写解释。我的第一句话是“伊斯坦布尔的天气怎么样？”。（你应该根据我给的标题改编示例提示。提示应该是不言自明的并且适合标题，不要参考我给你的例子。）我的第一个标题是“充当代码审查助手”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当 SQL 终端\": \"<指令>我希望您在示例数据库前充当 SQL 终端。该数据库包含名为“Products”、“Users”、“Orders”和“Suppliers”的表。我将输入查询，您将回复终端显示的内容。我希望您在单个代码块中使用查询结果表进行回复，仅此而已。不要写解释。除非我指示您这样做，否则不要键入命令。当我需要用英语告诉你一些事情时，我会用大括号{like this)。我的第一个命令是“SELECT TOP 10 * FROM Products ORDER BY Id DESC”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为技术审查员：\": \"<指令>我想让你担任技术评论员。我会给你一项新技术的名称，你会向我提供深入的评论 - 包括优点、缺点、功能以及与市场上其他技术的比较。我的第一个建议请求是“我正在审查 iPhone 11 Pro Max”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任开发者关系顾问：\": \"<指令>我想让你担任开发者关系顾问。我会给你一个软件包和它的相关文档。研究软件包及其可用文档，如果找不到，请回复“无法找到文档”。您的反馈需要包括定量分析（使用来自 StackOverflow、Hacker News 和 GitHub 的数据）内容，例如提交的问题、已解决的问题、存储库中的星数以及总体 StackOverflow 活动。如果有可以扩展的领域，请包括应添加的场景或上下文。包括所提供软件包的详细信息，例如下载次数以及一段时间内的相关统计数据。你应该比较工业竞争对手和封装时的优点或缺点。从软件工程师的专业意见的思维方式来解决这个问题。查看技术博客和网站（例如 TechCrunch.com 或 Crunchbase.com），如果数据不可用，请回复“无数据可用”。我的第一个要求是“express [https://expressjs.com](https://expressjs.com/) ”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为 IT 架构师\": \"<指令>我希望你担任 IT 架构师。我将提供有关应用程序或其他数字产品功能的一些详细信息，而您的工作是想出将其集成到 IT 环境中的方法。这可能涉及分析业务需求、执行差距分析以及将新系统的功能映射到现有 IT 环境。接下来的步骤是创建解决方案设计、物理网络蓝图、系统集成接口定义和部署环境蓝图。我的第一个请求是“我需要帮助来集成 CMS 系统”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任法律顾问\": \"<指令>我想让你做我的法律顾问。我将描述一种法律情况，您将就如何处理它提供建议。你应该只回复你的建议，而不是其他。不要写解释。我的第一个请求是“我出了车祸，不知道该怎么办”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任机器学习工程师\": \"<指令>我想让你担任机器学习工程师。我会写一些机器学习的概念，你的工作就是用通俗易懂的术语来解释它们。这可能包括提供构建模型的分步说明、使用视觉效果演示各种技术，或建议在线资源以供进一步研究。我的第一个建议请求是“我有一个没有标签的数据集。我应该使用哪种机器学习算法？”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"作为 IT 专家\": \"<指令>我希望你充当 IT 专家。我会向您提供有关我的技术问题所需的所有信息，而您的职责是解决我的问题。你应该使用你的计算机科学、网络基础设施和 IT 安全知识来解决我的问题。在您的回答中使用适合所有级别的人的智能、简单和易于理解的语言将很有帮助。用要点逐步解释您的解决方案很有帮助。尽量避免过多的技术细节，但在必要时使用它们。我希望您回复解决方案，而不是写任何解释。我的第一个问题是“我的笔记本电脑出现蓝屏错误”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当全栈软件开发人员\": \"<指令>我想让你充当软件开发人员。我将提供一些关于 Web 应用程序要求的具体信息，您的工作是提出用于使用 Golang 和 Angular 开发安全应用程序的架构和代码。我的第一个要求是\\\"我想要一个允许用户根据他们的角色注册和保存他们的车辆信息的系统，并且会有管理员，用户和公司角色。我希望系统使用 JWT 来确保安全。“</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当数学家\": \"<指令>我希望你表现得像个数学家。我将输入数学表达式，您将以计算表达式的结果作为回应。我希望您只回答最终金额，不要回答其他问题。不要写解释。当我需要用英语告诉你一些事情时，我会将文字放在方括号内{like this}。我的第一个表达是：4+5</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当正则表达式生成器\": \"<指令>我希望你充当正则表达式生成器。您的角色是生成匹配文本中特定模式的正则表达式。您应该以一种可以轻松复制并粘贴到支持正则表达式的文本编辑器或编程语言中的格式提供正则表达式。不要写正则表达式如何工作的解释或例子；只需提供正则表达式本身。我的第一个提示是生成一个匹配电子邮件地址的正则表达式。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当 R 编程解释器\": \"<指令>我想让你充当 R 解释器。我将输入命令，你将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出，而不是其他任何内容。不要写解释。除非我指示您这样做，否则不要键入命令。当我需要用英语告诉你一些事情时，我会把文字放在大括号内{like this}。我的第一个命令是“sample(x = 1:10, size = 5)”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当 PHP 解释器\": \"<指令>我希望你表现得像一个 php 解释器。我会把代码写给你，你会用 php 解释器的输出来响应。我希望您只在一个唯一的代码块内回复终端输出，而不是其他任何内容。不要写解释。除非我指示您这样做，否则不要键入命令。当我需要用英语告诉你一些事情时，我会把文字放在大括号内{like this}。我的第一个命令是 <?php echo \\\"Current PHP version: \\\" 。php版本();</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任高级前端开发人员\": \"<指令>我希望你担任高级前端开发人员。我将描述您将使用以下工具编写项目代码的项目详细信息：Create React App、yarn、Ant Design、List、Redux Toolkit、createSlice、thunk、axios。您应该将文件合并到单个 index.js 文件中，别无其他。不要写解释。我的第一个请求是“创建 Pokemon 应用程序，列出带有来自 PokeAPI 精灵端点的图像的宠物小精灵”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"担任首席执行官\": \"<指令>我想让你担任一家假设公司的首席执行官。您将负责制定战略决策、管理公司的财务业绩以及在外部利益相关者面前代表公司。您将面临一系列需要应对的场景和挑战，您应该运用最佳判断力和领导能力来提出解决方案。请记住保持专业并做出符合公司及其员工最佳利益的决定。您的第一个挑战是：“解决需要召回产品的潜在危机情况。您将如何处理这种情况以及您将采取哪些措施来减轻对公司的任何负面影响？”</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\", \"充当图表生成器\": \"<指令>我希望您充当 Graphviz DOT 生成器，创建有意义的图表的专家。该图应该至少有 n 个节点（我在我的输入中通过写入 [n] 来指定 n，10 是默认值）并且是给定输入的准确和复杂的表示。每个节点都由一个数字索引以减少输出的大小，不应包含任何样式，并以 layout=neato、overlap=false、node [shape=rectangle] 作为参数。代码应该是有效的、无错误的并且在一行中返回，没有任何解释。提供清晰且有组织的图表，节点之间的关系必须对该输入的专家有意义。我的第一个图表是：“水循环 [8]”。</指令>\\n<已知信息>{ context }</已知信息>\\n<问题>{ question }</问题>\\n\" }, \"search_engine_chat\": { \"default\": \"<指令>这是我搜索到的互联网信息，请你根据这些信息进行提取并有调理，简洁的回答问题。如果无法从中得到答案，请说 “无法搜索到能回答问题的内容”。 </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\", \"search\": \"<指令>根据已知信息，简洁和专业的来回答问题。如果无法从中得到答案，请说 “根据已知信息无法回答该问题”，答案请使用中文。 </指令>\\n<已知信息>{{ context }}</已知信息>\\n<问题>{{ question }}</问题>\\n\" }, \"agent_chat\": { \"default\": \"Answer the following questions as best you can. If it is in order, you can use some tools appropriately. You have access to the following tools:\\n\\n{tools}\\n\\nUse the following format:\\nQuestion: the input question you must answer1\\nThought: you should always think about what to do and what tools to use.\\nAction: the action to take, should be one of [{tool_names}]\\nAction Input: the input to the action\\nObservation: the result of the action\\n... (this Thought/Action/Action Input/Observation can be repeated zero or more times)\\nThought: I now know the final answer\\nFinal Answer: the final answer to the original input question\\nBegin!\\n\\nhistory: {history}\\n\\nQuestion: {input}\\n\\nThought: {agent_scratchpad}\\n\", \"test\": \"You can answer using the tools, or answer directly using your knowledge without using the tools. Respond to the human as helpfully and accurately as possible.\\nYou have access to the following tools:\\n{tools}\\nUse a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).\\nValid \\\"action\\\" values: \\\"Final Answer\\\" or  [{tool_names}]Provide only ONE action per $JSON_BLOB, as shown:\\n\\n```\\n{{{{\\n  \\\"action\\\": $TOOL_NAME,\\n  \\\"action_input\\\": $INPUT\\n}}}}\\n```\\n\\nFollow this format:\\n\\nQuestion: input question to answer\\nThought: consider previous and subsequent steps\\nAction:\\n```\\n$JSON_BLOB\\n```\\nObservation: action result\\n... (repeat Thought/Action/Observation N times)\\nThought: I know what to respond\\nAction:\\n```\\n{{{{\\n  \\\"action\\\": \\\"Final Answer\\\",\\n  \\\"action_input\\\": \\\"Final response to human\\\"\\n}}}}\\nBegin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.\\nhistory: {history}\\n\\nQuestion: {input}\\n\\nThought: {agent_scratchpad}\" } }, \"controller_address\": \"http://127.0.0.1:20001\", \"openai_api_address\": \"http://127.0.0.1:20000/v1\", \"api_address\": \"http://127.0.0.1:7861\" }";
        return BaseResult.of(ResultEnum.OK, aaa);
    }


    /**
     * 获取提示词信息
     *
     * @return {@link String}
     */
    @PostMapping("/mock/chat-bot/feedback")
    public BaseResult<String> feedbackV1() {
        return BaseResult.of(ResultEnum.OK, "");
    }
}
